package com.atguigu.lease.common.minio;

import io.minio.MinioClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * Minio配置类
 * 用于配置和创建MinIO客户端Bean
 */
@Configuration // 标记为配置类，表明这是一个Spring配置类
@EnableConfigurationProperties(MinioProperties.class) // 启用MinioProperties的配置属性支持
@ConditionalOnProperty(name = "minio.endpoint") // 当配置文件中存在minio.endpoint属性时才加载此配置
public class MinioConfiguration {
    @Autowired // 自动注入MinioProperties，用于获取MinIO的相关配置信息
    private MinioProperties properties;
    /**
     * 创建MinIO客户端Bean
     * 此方法用于构建并返回一个MinioClient实例，该实例将用于与MinIO服务进行交互
     * @return MinioClient实例，使用配置的endpoint、accessKey和secretKey进行初始化
     */
    @Bean // 将此方法返回的对象注册为Spring容器中的一个Bean，使其可以在其他地方被注入使用
    public MinioClient minioClient() {
        return MinioClient.builder().endpoint(properties.getEndpoint())
                .credentials(properties.getAccessKey(), properties.getSecretKey()).build();
    }
}
